﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>AdvControl</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../styles/styles.css">
<script language="javascript" src='../links.js' type="text/javascript"></script>
</head>
<body>

<h1>AdvControl</h1>
<div class=navbar>
<a href="../index.html">главная</a> |
<a href="index.html">сервисные функции</a> |
<a href="../miscapi/index.html">Miscellaneous API</a>
</div>

<div class=shortdescr>
Функция <code>AdvControl</code> позволяет запрашивать различную информацию и выполнять управляющие действия. Она работает везде: в панелях/редакторе/вьюере.
</div>

<pre class=syntax>
intptr_t WINAPI AdvControl(
  const GUID *PluginId,
  enum ADVANCED_CONTROL_COMMANDS Command,
  intptr_t Param1,
  void *Param2
);
</pre>

<h3>Параметры</h3>
<div class=descr>
  <div class=dfn>PluginId</div>
    <div class=dfndescr>Указатель на GUID плагина (для вашего плагина, GUID должен быть таким же, что и в поле <code>GlobalInfo.Guid</code> функции <a href="../exported_functions/getglobalinfow.html">GetGlobalInfoW</a>).</div>
  <div class=dfn>Command</div>
    <div class=dfndescr>Тип команды. Может быть следующим (перечисление <a name="ADVANCED_CONTROL_COMMANDS">ADVANCED_CONTROL_COMMANDS</a>):
    <table class="cont">
    <tr class="cont"><th class="cont" width="40%">Команда</th><th class="cont" width="60%">Описание</th></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_COMMIT">ACTL_COMMIT</a></td>
    <td class="cont" width="60%">"Фиксирует" действие последней операции с окнами (например, после <code>ACTL_SETCURRENTWINDOW</code>).<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> не используется.<br>
    Функция возвращает <code>TRUE</code> в случае успеха и <code>FALSE</code> при неудаче.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETARRAYCOLOR">ACTL_GETARRAYCOLOR</a></td>
    <td class="cont" width="60%">Получить все цвета Far Manager.<br>
    <code>Param1</code> размер буфера, в элементах <a href="../structures/farcolor.html">FarColor</a>.<br>
    <code>Param2</code> указатель на буфер плагина, в который будут скопированы текущие цветовые атрибуты.<br>
    <code>Param2 = NULL</code> позволяет узнать количество элементов в массиве цветов для копирования.<br>
    Функция всегда возвращает количество элементов в массиве цветов.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETCOLOR">ACTL_GETCOLOR</a></td>
    <td class="cont" width="60%">Получить цвет Far Manager по индексу.<br>
    <code>Param1</code> одна из констант <a href="../defs/farcolors.html">COL_*</a>, описанных в <code>farcolor.hpp</code><br>
    <code>Param2</code> указывает на переменную типа <a href="../structures/farcolor.html">FarColor</a>, в которую будет помещен соответствующий индексу код цвета.<br>
    Функция возвращает <code>TRUE</code>, если удалось получить указанные цветовые атрибуты.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETCURSORPOS">ACTL_GETCURSORPOS</a></td>
    <td class="cont" width="60%">Получить информацию о положении курсора относительно окна Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на структуру <a href="../winapi/coord.html">COORD</a>.<br>
    Функция возвращает <code>TRUE</code>, если положение курсора удалось получить, иначе - <code>FALSE</code>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETFARHWND">ACTL_GETFARHWND</a></td>
    <td class="cont" width="60%">Возвращает <code>HWND</code> текущего окна Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> не используется.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETFARRECT">ACTL_GETFARRECT</a></td>
    <td class="cont" width="60%">Получить информацию о координатах окна Far Manager в консольном буфере.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на структуру <a href="../winapi/small_rect.html">SMALL_RECT</a>.<br>
    Функция возвращает <code>TRUE</code>, если координаты окна Far Manager удалось получить, иначе - <code>FALSE</code>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETFARMANAGERVERSION">ACTL_GETFARMANAGERVERSION</a></td>
    <td class="cont" width="60%">Узнать версию Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указывает на переменную типа <a href="../structures/versioninfo.html">VersionInfo</a>, в которую будет помещена информация о версии Far Manager.<br>
    Функция всегда возвращает <code>TRUE</code>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETWINDOWCOUNT">ACTL_GETWINDOWCOUNT</a></td>
    <td class="cont" width="60%">Возвращает число открытых окон в Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> не используется.<br>
    Минимальное число окон равно <code>1</code> (при запуске Far Manager: в обычном режиме - файловые панели; с ключами <code>-e</code> или <code>-v</code> - редактор или программа просмотра, соответственно).<br></td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETWINDOWINFO">ACTL_GETWINDOWINFO</a></td>
    <td class="cont" width="60%">Получить информацию о конкретном окне Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на структуру <a href="../structures/windowinfo.html">WindowInfo</a>.<br>
    Функция возвращает <code>TRUE</code>, если окно с номером <code>WindowInfo.Pos</code> существует и
    <code>FALSE</code> - такого окна нет (поля структуры <a href="../structures/windowinfo.html">WindowInfo</a> не заполняются).<br>
    <code>WindowInfo.Pos</code> надо инициализировать перед вызовом функции.<br>
    Память под <code>WindowInfo.TypeName</code> и <code>WindowInfo.Name</code> плагин должен выделить самостоятельно,
    требуемые размеры можно получить передав <code>NULL</code> в качестве <code>WindowInfo.TypeName</code> и <code>WindowInfo.Name</code>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_GETWINDOWTYPE">ACTL_GETWINDOWTYPE</a></td>
    <td class="cont" width="60%">Получить информацию о типе окна Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на структуру <a href="../structures/windowtype.html">WindowType</a>.<br>
    Функция возвращает <code>TRUE</code>, если удалось определить тип окна.<br>
    В отличие от <code>ACTL_GETWINDOWINFO</code> эту команду можно вызывать из любых тредов.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_QUIT">ACTL_QUIT</a></td>
    <td class="cont" width="60%">Завершение работы Far Manager.<br>
    <code>Param1</code> код возврата Far Manager.<br>
    <code>Param2</code> не используется.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_REDRAWALL">ACTL_REDRAWALL</a></td>
    <td class="cont" width="60%">Перерисовка всех окон Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> не используется.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_SETARRAYCOLOR">ACTL_SETARRAYCOLOR</a></td>
    <td class="cont" width="60%">Изменить заданный диапазон цветовой схемы Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на структуру <a href="../structures/farsetcolors.html">FarSetColors</a>.<br>
    Функция возвращает <code>TRUE</code> при успешной замене заданного диапазона цветовой схемы и
    <code>FALSE</code> для неверно заданных параметров в структуре <a href="../structures/farsetcolors.html">FarSetColors</a>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_SETCURRENTWINDOW">ACTL_SETCURRENTWINDOW</a></td>
    <td class="cont" width="60%">Позволяет переключиться в конкретное окно Far Manager.<br>
    <code>Param1</code> число, задающее номер активного окна (нумерация начинается с <code>0</code>).<br>
    <code>Param2</code> не используется.<br>
    Функция возвращает <code>TRUE</code>, если переключение состоялось и <code>FALSE</code> при неудаче (не существует требуемого окна).<br>
    <p class=note><img src="../../images/note.gif" alt="Замечание для ACTL_SETCURRENTWINDOW" width="10" height="10"> Внимание!</p>
    <UL class=note><LI>Переключение не произойдёт до тех пор, пока не будет вызвана команда <code>ACTL_COMMIT</code> или пока Far Manager не получит управление.</LI></UL></td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_SETCURSORPOS">ACTL_SETCURSORPOS</a></td>
    <td class="cont" width="60%">Устанавливает положение курсора относительно окна Far Manager.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на заполненную структуру <a href="../winapi/coord.html">COORD</a>.<br>
    Функция возвращает <code>TRUE</code>, если положение курсора удалось изменить, иначе - <code>FALSE</code>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_SETPROGRESSSTATE">ACTL_SETPROGRESSSTATE</a></td>
    <td class="cont" width="60%">Устанавливает тип и состояние индикатора прогресса на кнопке Far Manager в панели задач.<br>
    <code>Param1</code> может принимать одно из следующих значений (перечисление <code>TASKBARPROGRESSTATE</code>):
    <table class="cont">
    <tr class="cont"><th class="cont" width="40%">Константа</th><th class="cont" width="60%">Описание</th></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="TBPS_NOPROGRESS">TBPS_NOPROGRESS</a></td>
    <td class="cont" width="60%"></td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="TBPS_INDETERMINATE">TBPS_INDETERMINATE</a></td>
    <td class="cont" width="60%"></td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="TBPS_NORMAL">TBPS_NORMAL</a></td>
    <td class="cont" width="60%"></td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="TBPS_ERROR">TBPS_ERROR</a></td>
    <td class="cont" width="60%"></td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="TBPS_PAUSED">TBPS_PAUSED</a></td>
    <td class="cont" width="60%"></td></tr>
    </table>
    <code>Param2</code> не используется.<br>
    Функция возвращает <code>TRUE</code>.
    <p class=note><img src="../../images/note.gif" alt="Замечание для ACTL_SETPROGRESSSTATE" width="10" height="10"> Внимание!</p>
    <UL class=note><LI>Работает в Windows 7 и выше. Для подробностей см. метод <a class="msdocs"><dfn>ITaskbarList3::SetProgressStat</dfn></a></LI></UL></td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_SETPROGRESSVALUE">ACTL_SETPROGRESSVALUE</a></td>
    <td class="cont" width="60%">Отображает и корректирует прогресс операции на кнопке Far Manager в панели задач.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на структуру <a href="../structures/progressvalue.html">ProgressValue</a>.<br>
    Функция возвращает <code>TRUE</code>.
    <p class=note><img src="../../images/note.gif" alt="Замечание для ACTL_SETPROGRESSVALUE" width="10" height="10"> Внимание!</p>
    <UL class=note><LI>Работает в Windows 7 и выше. Для подробностей см. метод <a class="msdocs"><dfn>ITaskbarList3::SetProgressValue</dfn></a></LI></UL></td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_PROGRESSNOTIFY">ACTL_PROGRESSNOTIFY</a></td>
    <td class="cont" width="60%">Far Manager выполняет стандартное оповещение о завершении операции
    (при неактивном окне приложения кратковременное мерцание кнопкой Far Manager в панели задач и последующая подсветка её до получения окном фокуса).<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> не используется.<br>
    Функция возвращает <code>TRUE</code>.</td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_SYNCHRO">ACTL_SYNCHRO</a></td>
    <td class="cont" width="60%">Позволяет потоку, запущенному плагином, выполнить код в контексте главного потока Far Manager посредством вызова функции <a href="../exported_functions/processsynchroeventw.html">ProcessSynchroEventW</a>.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2</code> указатель на данные, передающиеся в функцию <code>ProcessSynchroEventW</code>, может быть <code>NULL</code>.<br>
    Функция всегда возвращает <code>0</code>.<br>
    <p class=note><img src="../../images/note.gif" alt="Замечание для ACTL_SYNCHRO" width="10" height="10"> Внимание!</p>
    <UL class=note><LI>Проверка на вызов функции <code>ProcessSynchroEventW</code> проводится в  <code>GetInputRecord</code>, т.е. гарантированного времени отклика нет, но должно быть достаточно быстро.</LI></UL></td></tr>

    <tr class="cont"><td class="cont" width="40%"><a name="ACTL_WAITKEY">ACTL_WAITKEY</a></td>
    <td class="cont" width="60%">Ожидать клавишу.<br>
    <code>Param1</code> не используется.<br>
    <code>Param2 = NULL</code> - ждём любую клавишу.<br>
    <code>Param2</code> указатель на заполненную структуру <a href="../winapi/input_record.html">INPUT_RECORD</a> (код клавиши) - ждём конкретную клавишу.<br>
    Функция всегда возвращает <code>0</code>.</td></tr>

    </table>
    </div>
  <div class=dfn>Param1</div>
    <div class=dfndescr>Указывает на параметры1 команды. Смотрите описание <code>Command</code>.</div>
  <div class=dfn>Param2</div>
    <div class=dfndescr>Указывает на параметры2 команды. Смотрите описание <code>Command</code>.</div>
</div>

<h3>Возвращаемое значение</h3>
<div class=descr>
Смотрите описание <code>Command</code>.
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="panelcontrol.html">PanelControl</a>,
<a href="editorcontrol.html">EditorControl</a>,
<a href="viewercontrol.html">ViewerControl</a>
</div>

</body>
</html>
